package analyzer;

/*
import common.Constants;
import common.AnalysisState;
*/
import java.util.ArrayList;

public class WinningPeriodAnalyzer {
    
    /**
     * 
     * 당첨에 소요된 평균 기간을 구한다.
     * 
     * 2번째 인자로 당첨 기간을 필터링 할 수 있다.
     *
     * @param currentGameIndex
     * @param filteringPeriod
     * @return double - 당첨에 소요되는 평균 기간
     */
    static public double getAverageWinningPeriod(ArrayList<Integer> winningHistory, int currentGameIndex, int filteringPeriod) {
        int sum = 0;
        
        // 두 수 사이의 차이를 평균하니까 index 는 -1 까지 증가한다.
        for ( int idx = 0 ; idx < winningHistory.size() - 1 ; idx++ ) {
            int previousWinningIndex = winningHistory.get(idx);
            
            // 만약 현재 게임 회차 - 필터링 기간 보다 작은 index 값이라면, skip
            if ( previousWinningIndex < (currentGameIndex - filteringPeriod) ) continue;
            
            int nextWinningIndex = winningHistory.get(idx + 1);
            
            sum += nextWinningIndex - previousWinningIndex;
        }
        
        return sum / winningHistory.size() ;
    }
    
    /*
    static public int getStreakWinningWeightValue(ArrayList<Integer> winningHistory, int currentGameIndex, int filteringPeriod) {
        int resultWeightFactor = 0;
        
        int sizeOfWinningHistory = winningHistory.size();
        int currentAnalyzingState = C
        
        if (sizeOfWinningHistory > Constants.CNST_MINIMAL_STREAKWINNING_ANALYSIS_PERIOD) {
            for (int idx = 0 ; idx < sizeOfWinningHistory ; idx++) {
                
            }            
        } else {
            return 0;
        }
        
        
        
        return resultWeightFactor;
    }
    */
}
